#ifndef CONEXAO_H
#define CONEXAO_H

#include <QObject>
#include <QTreeWidget>
#include <QVector>
#include <QTcpSocket>
#include <QHostAddress>
#include <QAbstractSocket>

#include "fileitem.h"

class Conexao : public QObject
{

Q_OBJECT

public:

    Conexao(QString endereco_servidor);
    inline QTreeWidget* getVisualizador () { return this->visualizador_arquivos; }
    inline QString getEnderecoLocal () { return this->dados_rede->localAddress().toString(); }
    void adicionarArquivoInterno (FileItem* item);

public slots:

    void conexaoCaiu ();
    void conexaoEstabelecida ();
    void dadosRecebidos ();

signals:

    void conexaoIniciada ();
    void erroRede (QAbstractSocket::SocketError error);

private:

    QTcpSocket* dados_rede;
    QVector<FileItem*> arquivos_disponiveis;
    QTreeWidget* visualizador_arquivos;

    void enviarListaArquivos ();
    void processarLista();
    void adicionarArquivoExterno();

    QByteArray dados;

};

#endif // CONEXAO_H
